﻿namespace AlgoHero.Modelo
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;

    public class Compas
    {
        #region Atributos

        private IList acordes;

        #endregion

        #region Constructor

        public Compas()
        {
            acordes = new List<Acorde>();
        }

        #endregion

        #region Métodos

        public void AddAcorde(Acorde unAcorde)
        {
            /* Postcondicion: Se agregó un acorde al compás. */
            this.acordes.Add(unAcorde);
        }
                
        public int CalcularDuracion()
        {
            /* Calcula la duración musical de todo el compás.
             * Postcondición: Devuelve la duración del compás.
             */
            int acumulado = 0;

            foreach (Acorde acorde in acordes)
            {
                acumulado += acorde.Duracion;
            }

            return acumulado;
        }

        public bool EsVacio()
        {
            return (this.acordes.Count == 0);
        }

        public IEnumerator GetEnumerator()
        {
            /* Implementa un iterador para esta clase ("foreach") */

            for (int i = 0; i < this.acordes.Count; i++)
            {
                yield return this.acordes[i];
            }
        }

        #endregion

    }
}
